#pragma once
#include "../../Misc/stdafx.h"
#include "../../Renderer/Header Files/CRenderNode_AL.h"
#include "../../Renderer/Header Files/CSpriteNode_AL.h"

enum EOBJECT_TYPES{ eANIMATED_OBJ, eSTATICIMAGE_OBJ, eBASE_OBJ };
//used for AI
enum EFACTION_TYPES{ ePLAYER_FAC, eENEMY_FAC, eBASE_FAC };


class CBaseObject
{
private:
	
	
protected:
	CRenderNode_AL* m_pRenderNode;
	D3DXVECTOR3 m_vPosition;
	//flag for if this object should be removed from the object manager in it's next frame.
	bool m_bIsToBeRemoved;
	int m_nObjectType;
	//for AI
	int m_nFactionType;
public:
	CBaseObject();
	CBaseObject(CSpriteNode_AL* rndrNd);
	~CBaseObject();
	//accessors
	bool GetIfToBeRemoved(){ return m_bIsToBeRemoved; }
	CRenderNode_AL* GetRenderNode() { return m_pRenderNode; }
	int GetObjectType(){ return m_nObjectType; }
	int GetFactionType(){ return m_nFactionType; }
	D3DXVECTOR3 GetPosition(){ return m_vPosition; }
	//mutators 
	void SetIfToBeRemoved(bool _flag){ m_bIsToBeRemoved = _flag; }
	void SetPosition(D3DXVECTOR3 pos) { m_vPosition = pos; }
	void SetObjectType(int _type){ m_nObjectType = _type; }
	void SetFactionType(int _type){ m_nFactionType = _type; }


	virtual void Update(float fDT);
	virtual void DestroyObject();
	
	

	
};